package one.microstream.communication.types;

/*-
 * #%L
 * MicroStream Communication
 * %%
 * Copyright (C) 2019 - 2022 MicroStream Software
 * %%
 * This program and the accompanying materials are made available under the
 * terms of the Eclipse Public License 2.0 which is available at
 * http://www.eclipse.org/legal/epl-2.0.
 * 
 * This Source Code may also be made available under the following Secondary
 * Licenses when the conditions for such availability set forth in the Eclipse
 * Public License, v. 2.0 are satisfied: GNU General Public License, version 2
 * with the GNU Classpath Exception which is
 * available at https://www.gnu.org/software/classpath/license.html.
 * 
 * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
 * #L%
 */

import java.nio.ByteBuffer;

import one.microstream.chars.XChars;

public interface ComPeerIdentifier
{

	public static ComPeerIdentifier New()
	{
		return new ComPeerIdentifier.Default();
	}

	public ByteBuffer getBuffer();
	
	public class Default implements ComPeerIdentifier
	{
		///////////////////////////////////////////////////////////////////////////
		// constants //
		//////////////
		
		private final String peerIdentifierString = "Microstream OGC Client";
		
		///////////////////////////////////////////////////////////////////////////
		// constructors //
		/////////////////
		
		public Default()
		{
			super();
		}

		///////////////////////////////////////////////////////////////////////////
		// methods //
		////////////
		
		@Override
		public ByteBuffer getBuffer()
		{
			return XChars.standardCharset().encode(this.peerIdentifierString);
		}
		
	}
	
}
